﻿/*Di Carbone Carlo
 * */

using System;
using System.Collections.Generic;
using System.Data;
using System.Windows.Forms;
using BadgeManager.Controller;
using BadgeManager.Model;

namespace Badge_Manager.View
{
    public partial class frmMovimentiTessera : Form
    {
        private static frmMovimentiTessera session;

        public static frmMovimentiTessera Istance(Utente utente)
        {
            if (session == null)
                session = new frmMovimentiTessera(utente);
            return session;
        }

        private ctrlMovimentiTessere cMovTessere;
        private List<MovimentoTessera> lstMovimentiTessere;
        private Utente Utente;
        private DataTable tableMovimenti = new DataTable();

        private frmMovimentiTessera(Utente utente)
        {
            InitializeComponent();
            Utente = utente;
            cMovTessere = new ctrlMovimentiTessere();
            lstMovimentiTessere = new List<MovimentoTessera>();
            SettaTable();
            AggiornaGriglia();
        }

        private void SettaTable()
        {
            tableMovimenti.Columns.Add("id", typeof(Guid));
            tableMovimenti.Columns.Add("Data Movimento", typeof(string));
            tableMovimenti.Columns.Add("Nome", typeof(string));
            tableMovimenti.Columns.Add("Cognome", typeof(string));
            tableMovimenti.Columns.Add("Note", typeof(string));
            tableMovimenti.Columns.Add("Codice Tessera", typeof(string));
            tableMovimenti.Columns.Add("Codice Corso", typeof(string));
            tableMovimenti.Columns.Add("Nome Corso", typeof(string));
            tableMovimenti.Columns.Add("Data Inizio", typeof(string));
            tableMovimenti.Columns.Add("Data Fine", typeof(string));
            tableMovimenti.Columns.Add("Numero Stanza", typeof(string));
            tableMovimenti.Columns.Add("Descrizione", typeof(string));
        }

        private void AggiornaGriglia()
        {
            lstMovimentiTessere = new ctrlMovimentiTessere().SelezionaTutto("1=1", "datamovimento DESC");
            tableMovimenti.Rows.Clear();
            foreach (MovimentoTessera mov in lstMovimentiTessere)
            {
                tableMovimenti.Rows.Add(
                    mov.Id,
                    mov.DataMovimento,
                    mov.Persona != null ? mov.Persona.Nome : "",
                    mov.Persona != null ? mov.Persona.Cognome : "",
                    mov.Persona != null ? mov.Persona.Note : "",
                    mov.Tessera != null ? mov.Tessera.Codice : "",
                    mov.Attivita != null && mov.Attivita.Corso != null ? mov.Attivita.Corso.Codice : "",
                    mov.Attivita != null && mov.Attivita.Corso != null ? mov.Attivita.Corso.Nome : "",
                    mov.Attivita != null && mov.Attivita.Corso != null ? mov.Attivita.Corso.DataInizio.ToShortDateString() : "",
                    mov.Attivita != null && mov.Attivita.Corso != null ? mov.Attivita.Corso.DataFine.ToString() : "",
                    mov.Attivita != null && mov.Attivita.Stanza != null ? mov.Attivita.Stanza.Numero.ToString() : "",
                    mov.Descrizione != null ? mov.Descrizione : ""
                    );
            }
            grid.DataSource = tableMovimenti;
            grid.Columns["Id"].Visible = false;

            grid.Columns["Data Inizio"].DefaultCellStyle.Format = "dddd dd MMMM yyyy"; // solo per i datatime
            grid.Columns["Data Fine"].DefaultCellStyle.Format = "dddd dd MMMM yyyy"; // solo per i datatime
            grid.Columns["Data Movimento"].DefaultCellStyle.Format = "dddd dd MMMM yyyy"; // solo per i datatime
            grid.Columns["Data Movimento"].FillWeight = 130;
        }

        private void txtCerca_TextChanged(object sender, EventArgs e)
        {
            AggiornaGriglia();
            if (string.IsNullOrEmpty(txtRicerca.Text))
            {
                tableMovimenti.DefaultView.RowFilter = "";
            }
            else
            {
                string testo = txtRicerca.Text.Replace("'", "''");
                string filter = "[Nome] LIKE '%" + testo + "%' "
                    + " or [Cognome] LIKE '%" + testo + "%'"
                    + " or [Nome Corso] LIKE '%" + testo + "%'"
                    + " or [Codice Tessera] LIKE '%" + testo + "%'"
                    + " or [Codice Corso] LIKE '%" + testo + "%'"
                    + " or [Numero Stanza] LIKE '%" + testo + "%'"
                    + " or [Data Inizio] LIKE '%" + testo + "%'"
                    + " or [Data Fine] LIKE '%" + testo + "%'"
                    + " or [Data Movimento] LIKE '%" + testo + "%'";
                tableMovimenti.DefaultView.RowFilter = filter;
            }
        }

        private void frmMovimentiTessera_FormClosing(object sender, FormClosingEventArgs e)
        {
            session = null;
        }

        private void cmdAggiorna_Click(object sender, EventArgs e)
        {
            AggiornaGriglia();
        }
    }
}